import { IPSAppCounterRef } from '../../app/control/ipsapp-counter-ref';
import { IPSControlContainer } from '../ipscontrol-container';
import { IPSMDAjaxControl } from '../ipsmdajax-control';
import { IPSDETreeColumn } from './ipsdetree-column';
import { IPSDETreeNode } from './ipsdetree-node';
import { IPSDETreeNodeRS } from './ipsdetree-node-rs';
import { IPSLanguageRes } from '../../res/ipslanguage-res';

/**
 *
 * 子接口类型识别属性[]
 * 继承父接口类型值[TREEVIEW]
 * @export
 * @interface IPSDETree
 */
export interface IPSDETree extends IPSMDAjaxControl, IPSControlContainer {
  /**
   * 无值显示内容
   * @type {string}
   */
  emptyText: string;

  /**
   * 无值内容语言资源
   *
   * @type {IPSLanguageRes}
   */
  getEmptyTextPSLanguageRes(): IPSLanguageRes | null;

  /**
   * 无值内容语言资源
   *
   * @type {IPSLanguageRes}
   */
  get emptyTextPSLanguageRes(): IPSLanguageRes | null;

  /**
   * 无值内容语言资源（必须存在）
   *
   * @type {IPSLanguageRes}
   */
  getEmptyTextPSLanguageResMust(): IPSLanguageRes;

  /**
   * 应用计数器引用
   *
   * @type {IPSAppCounterRef}
   */
  getPSAppCounterRef(): IPSAppCounterRef | null;

  /**
   * 应用计数器引用
   *
   * @type {IPSAppCounterRef}
   */
  get psAppCounterRef(): IPSAppCounterRef | null;

  /**
   * 应用计数器引用（必须存在）
   *
   * @type {IPSAppCounterRef}
   */
  getPSAppCounterRefMust(): IPSAppCounterRef;

  /**
   * 树表格列集合
   *
   * @type {IPSDETreeColumn[]}
   */
  getPSDETreeColumns(): IPSDETreeColumn[] | null;

  /**
   * 树表格列集合
   *
   * @type {IPSDETreeColumn[]}
   */
  get psDETreeColumns(): IPSDETreeColumn[] | null;

  findPSDETreeColumn(objKey: any): IPSDETreeColumn | null;

  /**
   * 树节点关系集合
   *
   * @type {IPSDETreeNodeRS[]}
   */
  getPSDETreeNodeRSs(): IPSDETreeNodeRS[] | null;

  /**
   * 树节点关系集合
   *
   * @type {IPSDETreeNodeRS[]}
   */
  get psDETreeNodeRSs(): IPSDETreeNodeRS[] | null;

  findPSDETreeNodeRS(objKey: any): IPSDETreeNodeRS | null;

  /**
   * 树节点集合
   *
   * @type {IPSDETreeNode[]}
   */
  getPSDETreeNodes(): IPSDETreeNode[] | null;

  /**
   * 树节点集合
   *
   * @type {IPSDETreeNode[]}
   */
  get psDETreeNodes(): IPSDETreeNode[] | null;

  findPSDETreeNode(objKey: any): IPSDETreeNode | null;

  /**
   * 树表格模式
   * @description 值模式 [树表格模式] {0：无、 1：常规树表格、 2：甘特图树表格 }
   * @type {( number | 0 | 1 | 2)}
   */
  treeGridMode: number | 0 | 1 | 2;

  /**
   * 支持编辑
   * @type {boolean}
   * @default false
   */
  enableEdit: boolean;

  /**
   * 支持根选择
   * @type {boolean}
   */
  enableRootSelect: boolean;

  /**
   * 默认输出图标
   * @type {boolean}
   */
  outputIconDefault: boolean;

  /**
   * 显示根
   * @type {boolean}
   */
  rootVisible: boolean;
}
